home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 April / enter-2004-04.iso / files / httrack-3.30.exe / {app} / src_win / WinHTTrack / about.cpp next >
Encoding:
C/C++ Source or Header  |  2003-01-26  |  7.0 KB  |  309 lines

  1. // about.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Shell.h"
  6. #include "about.h"
  7. //#include "about_sh.h"
  8.  
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14.  
  15. extern "C" {
  16.   #include "htsbase.h"
  17. }
  18.  
  19. extern HICON httrack_icon;
  20. extern CString _HTTRACK_VERSION;
  21.  
  22. extern int LANG_T(int);
  23. // Helper
  24. extern LaunchHelp* HtsHelper;
  25. extern "C" {
  26.   #include "httrack-library.h"
  27. }
  28.  
  29. /////////////////////////////////////////////////////////////////////////////
  30. // Cabout dialog
  31.  
  32.  
  33. Cabout::Cabout(CWnd* pParent /*=NULL*/)
  34.     : CDialog(Cabout::IDD, pParent)
  35. {
  36.     //{{AFX_DATA_INIT(Cabout)
  37.     m_infover = _T("");
  38.     m_lang = -1;
  39.     //}}AFX_DATA_INIT
  40. }
  41.  
  42.  
  43. void Cabout::DoDataExchange(CDataExchange* pDX)
  44. {
  45.     CDialog::DoDataExchange(pDX);
  46.     //{{AFX_DATA_MAP(Cabout)
  47.     DDX_Control(pDX, IDC_SPLASH, m_splash);
  48.     DDX_Control(pDX, IDC_lang, m_ctl_lang);
  49.     DDX_Text(pDX, IDC_INFOVER, m_infover);
  50.     DDX_CBIndex(pDX, IDC_lang, m_lang);
  51.     //}}AFX_DATA_MAP
  52. }
  53.  
  54.  
  55. BEGIN_MESSAGE_MAP(Cabout, CDialog)
  56.     //{{AFX_MSG_MAP(Cabout)
  57.     ON_CBN_SELCHANGE(IDC_lang, OnSelchangelang)
  58.     ON_WM_HELPINFO()
  59.     ON_WM_LBUTTONDOWN()
  60.     ON_WM_MOUSEMOVE()
  61.     //}}AFX_MSG_MAP
  62.   ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  63.   ON_COMMAND(ID_HELP_FINDER,OnHelpInfo2)
  64.   ON_COMMAND(ID_HELP,OnHelpInfo2)
  65.     ON_COMMAND(ID_DEFAULT_HELP,OnHelpInfo2)
  66. END_MESSAGE_MAP()
  67.  
  68. /////////////////////////////////////////////////////////////////////////////
  69. // Cabout message handlers
  70.  
  71. BOOL Cabout::OnInitDialog() 
  72. {
  73.   //m_lang=LANG_T(-1);    // langue?
  74.   CDialog::OnInitDialog();
  75.  
  76.   WINDOWPLACEMENT wp;
  77.   m_splash.GetWindowPlacement(&wp);
  78.   wp.rcNormalPosition.right=wp.rcNormalPosition.left+300+1;
  79.   wp.rcNormalPosition.bottom=wp.rcNormalPosition.top+69+1; 
  80.   m_splash.SetWindowPlacement(&wp);
  81.  
  82.   m_ctl_lang.ResetContent();
  83.   {
  84.     char lang_str[1024];
  85.     //int old_lang=LANG_T(-1);
  86.     int i=0;
  87.     int curr_lng=LANG_T(-1);
  88.     QLANG_T(0);
  89.     strcpybuff(lang_str,"LANGUAGE_NAME");
  90.     LANG_LOAD(lang_str);    // 0 english 1 franτais..
  91.     while(strlen(lang_str)) {
  92.       m_ctl_lang.AddString(lang_str);
  93.       i++;
  94.       QLANG_T(i);
  95.       strcpybuff(lang_str,"LANGUAGE_NAME");
  96.       LANG_LOAD(lang_str);    // 0 english 1 franτais..
  97.     }
  98.     QLANG_T(curr_lng);
  99.     //LANG_T(min(old_lang,i-1));
  100.   }
  101.  
  102.   /* sel */
  103.   int i;
  104.   int max=m_ctl_lang.GetCount();
  105.   m_ctl_lang.SetCurSel(-1);
  106.   for(i=0;i<max;i++) {
  107.     CString st;
  108.     m_ctl_lang.GetLBText(i,st);
  109.     if (strcmp(st,LANGUAGE_NAME)==0) {
  110.       m_ctl_lang.SetCurSel(i);
  111.     }
  112.   }
  113.   
  114.   EnableToolTips(true);     // TOOL TIPS
  115.   setlang();
  116.   SetIcon(httrack_icon,false);
  117.   SetIcon(httrack_icon,true);  
  118.  
  119.   SetForegroundWindow();   // yop en premier plan!
  120.  
  121.     return TRUE;  // return TRUE unless you set the focus to a control
  122.                   // EXCEPTION: OCX Property Pages should return FALSE
  123. }
  124.  
  125. void Cabout::setlang() {
  126.   const char* avail = hts_is_available();
  127.   CString info = "WinHTTrack Website Copier ";
  128.   info+= _HTTRACK_VERSION;
  129.   if (avail && *avail) {
  130.     info+=" (";
  131.     info+= avail;
  132.     info+=")";
  133.   }
  134.   info+=LANG(LANG_K1);
  135.   info+="\r\n\r\n";
  136.   info+=LANG_K3;
  137.   info+=" :\r\n";
  138.   info+=HTTRACK_WEB;
  139.   SetDlgItemText(IDC_INFOVER,info);
  140.   //
  141.   SetWindowText(LANG_K2);
  142.   //SetDlgItemText(IDC_visit,LANG_K3);
  143. }
  144.  
  145. void Cabout::OnOK() 
  146. {
  147.   /*
  148.   DWORD a;
  149.   a=m_ctl_hot.GetHotKey();
  150.   int vcc=LOWORD(a);
  151.   int mod=HIWORD(a);
  152.   */
  153.     CDialog::OnOK();
  154. }
  155.  
  156. void Cabout::OnSelchangelang() 
  157. {
  158.   int r;
  159.   int old_lang=LANG_T(-1);
  160.   r = m_ctl_lang.GetCurSel();
  161.   if (r!=CB_ERR) {
  162.     CString st;
  163.     m_ctl_lang.GetLBText(r,st);
  164.     int i;
  165.     int max=m_ctl_lang.GetCount();
  166.     for(i=0;i<max;i++) {
  167.       char lang_str[1024];
  168.  
  169.       QLANG_T(i);
  170.       strcpybuff(lang_str,"LANGUAGE_NAME");
  171.       LANG_LOAD(lang_str);    // 0 english 1 franτais..
  172.  
  173.       //LANG_T(i);    // 0 english 1 franτais..
  174.       if (strcmp(st,lang_str)==0) {
  175.         LANG_T(i);
  176.         setlang();
  177.         if (i != old_lang)
  178.           AfxMessageBox("Please restart WinHTTrack so that your language preferences can be updated!");
  179.         return;
  180.       }
  181.     }
  182.     /* error */
  183.     LANG_T(0);    // 0 english 1 franτais..
  184.   }
  185.   setlang();
  186. }
  187.  
  188. // Appel aide
  189. BOOL Cabout::OnHelpInfo2() {
  190.   return OnHelpInfo(NULL);
  191. }
  192.  
  193. BOOL Cabout::OnHelpInfo(HELPINFO* dummy) 
  194. {
  195.   //return CDialog::OnHelpInfo(pHelpInfo);
  196.   HtsHelper->Help();
  197.   return true;
  198.   //AfxGetApp()->WinHelp(0,HELP_FINDER);    // Index du fichier Hlp
  199.   //return true;
  200. }
  201.  
  202.  
  203.  
  204.  
  205.  
  206. // ------------------------------------------------------------
  207. // TOOL TIPS
  208. //
  209. // ajouter dans le .cpp:
  210. // remplacer les deux Wid1:: par le nom de la classe::
  211. // dans la message map, ajouter
  212. // ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  213. // dans initdialog ajouter
  214. // EnableToolTips(true);     // TOOL TIPS
  215. //
  216. // ajouter dans le .h:
  217. // char* GetTip(int id);
  218. // et en generated message map
  219. // afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  220. BOOL Cabout::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  221. {
  222.   TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
  223.   UINT nID =pNMHDR->idFrom;
  224.   if (pTTT->uFlags & TTF_IDISHWND)
  225.   {
  226.     // idFrom is actually the HWND of the tool
  227.     nID = ::GetDlgCtrlID((HWND)nID);
  228.     if(nID)
  229.     {
  230.       char* st=GetTip(nID);
  231.       if (st != "") {
  232.         pTTT->lpszText = st;
  233.         pTTT->hinst = AfxGetResourceHandle();
  234.         return(TRUE);
  235.       }
  236.     }
  237.   }
  238.   return(FALSE);
  239. }
  240. char* Cabout::GetTip(int ID)
  241. {
  242.   switch(ID) {
  243.     case IDC_lang:   return LANG_U1; break;
  244.     case IDC_abouticon: return LANG_K3 ; break;
  245.     case IDCANCEL:   return LANG(LANG_TIPCANCEL); break;
  246.     case IDOK:       return LANG(LANG_TIPOK); break;
  247.   }
  248.   return "";
  249. }
  250. // TOOL TIPS
  251. // ------------------------------------------------------------
  252.  
  253. void Cabout::OnLButtonDown(UINT nFlags, CPoint point) 
  254. {
  255.   int id=0;
  256.   CWnd* w=ChildWindowFromPoint(point);
  257.   if (w)
  258.     id=w->GetDlgCtrlID();
  259.  
  260.   // Select
  261.   switch(id) {
  262.     case 0: break;
  263.     case IDC_SPLASH:
  264.       this->ClientToScreen(&point);
  265.       w->ScreenToClient(&point);
  266.     if ((point.y>=100) && (point.y<=110) || (point.y<=80)) {
  267.       if (!ShellExecute(NULL,"open","http://www.httrack.com","","",SW_RESTORE)) {
  268.       }
  269.     }
  270.     break;
  271.   }
  272.  
  273.   CDialog::OnLButtonDown(nFlags, point);
  274. }
  275.  
  276. void Cabout::OnMouseMove(UINT nFlags, CPoint point) 
  277. {
  278.   int id=0;
  279.   CWnd* w=ChildWindowFromPoint(point);
  280.   if (w)
  281.     id=w->GetDlgCtrlID();
  282.  
  283.   // Select
  284.   switch(id) {
  285.   case 0: break;
  286.   case IDC_SPLASH:
  287.     this->ClientToScreen(&point);
  288.     w->ScreenToClient(&point);
  289.     HCURSOR curs=NULL;
  290.     if (
  291.          (point.y>=120) && (point.y<=140)
  292.       || (point.y<=80)
  293.       || (point.y>=100) && (point.y<=110)
  294.       ) {
  295.       curs=AfxGetApp()->LoadCursor(IDC_CURSWWW);
  296.     } else {
  297.       curs=AfxGetApp()->LoadStandardCursor(IDC_ARROW);
  298.     }
  299.     if (curs) {
  300.       //if (curs != currentCurs) {
  301.         SetCursor(curs);
  302.         // currentCurs=curs;
  303.       //}
  304.     }
  305.   }  
  306.  
  307.     CDialog::OnMouseMove(nFlags, point);
  308. }
  309.